package com.jeff.practice;

import java.util.*;

/**
 * 数据表记录包含表索引index和数值value（int范围的正整数）
 * 请对表索引相同的记录进行合并，即将相同索引的数值进行求和运算，输出按照index值升序进行输出。
 * @author yaojianfeng
 */
public class CalculateTableNumber {

    public static void main(String[] args) {
        //先使用Scanner类读取输入键值对的个数n（1 <= n <= 500）
        Scanner scanner = new Scanner(System.in);
        //读取输入的个数
        int n = scanner.nextInt();

        scanner.nextLine(); //读取下一行

        //创建HashMap用于存储键值对,key为index,value为value
        HashMap<Integer, Integer> map = new HashMap<>(16);


        //读取输入的键值对
        for (int i = 0; i < n; i++) {
            String[] input = scanner.nextLine().split(" ");
            int key = Integer.parseInt(input[0]);
            int value = Integer.parseInt(input[1]);

            //如果map中存在相同的key，则将value值进行求和
            if (map.containsKey(key)) {
                map.put(key, map.get(key) + value);
            } else {
                map.put(key, value);
            }
        }
        ArrayList<Integer> integers = new ArrayList<>(map.keySet());
       //对integers进行排序
        Collections.sort(integers);
        //输出合并后的键值对
        for (int i = 0; i < integers.size(); i++) {
            int key = integers.get(i);
            int value = map.get(key);
            System.out.println(key + " " + value);
        }
    }
}
